package model;

public abstract class AbstractPiece implements Pieces{
	Couleur couleur;
	Coord coord;
	String name;
	
	public AbstractPiece(String name, Couleur couleur, Coord coord) {
		this.name=name;
		this.couleur = couleur;
		this.coord=coord;
	}
	@Override
	//Mange la pièce
	public boolean capture() {
		if(coord.y != -1 || coord.x != -1){
			coord.x = -1;
			coord.y = -1;
			return true;
		}
		return false;
	}
	@Override
	public Couleur getCouleur() {
		return couleur;
	}
	@Override
	public String getName() {
		return name;
	}
	@Override
	public int getX() {
		return coord.x;
	}
	@Override
	public int getY() {
		return coord.y;
	}
	@Override
	public abstract boolean isMoveOk(int xFinal, int yFinal);
	@Override
	public boolean move(int xFinal, int yFinal) {
		if(Coord.coordonnees_valides(xFinal, yFinal))
		{
			coord.x = xFinal;
			coord.y = yFinal;
			return true;
		}
		return false;
	}
	
	protected boolean isMouvementDiagonale(int xFinal, int yFinal){
		if((Math.abs((yFinal - this.getY())/(xFinal - this.getX()))) == 1) //True si diagonale
		{
			return true;
		}
		return false;
	}
	
	protected boolean isMouvementLigneDroite(int xFinal, int yFinal) //True si droit, false sinon
	{
		if(xFinal != this.getX() && yFinal != this.getY()) //S'il se déplace en X et Y = pas en ligne droite, c'est pas bon
		{
			return false;
		}
		return true;
	}
	
	protected boolean isBouger(int xFinal, int yFinal)
	{
		if(xFinal == this.getX() && yFinal == this.getY()) //S'il se déplace pas, c'est pas bon
		{
			return false;
		}
		return true;
	}
	
	
	
}
